<?php
// roles/models/DbTable/Roles.php


/**
 * Clase de la tabla roles.
 */
class Roles_Model_DbTable_Roles extends Zend_Db_Table_Abstract {
	/** Table name */
	protected $_name = 'rol';
	protected $_primary = 'codrol';
	protected $_sequence = 'seq_rol';
	protected $_rowClass = 'App_Audit_Row';
	
	/**
	 * Devuelve los roles existentes en el sistema
	 * @return array
	 */
	public function getRoles() {
		$orderby = array('codrol DESC');
		$select = $this->select( self::SELECT_WITH_FROM_PART )->where("codpadre IS NULL")->order($orderby);
		return $select->query()->fetchAll();
	}
	
	/**
	 * Obtiene los roles a los que se encuentra asignado un usuario
	 * @param int $codusuario
	 * @return array
	 */
	public function getRolesPorUsuario($codusuario) {
		$select = $this	->select(self::SELECT_WITH_FROM_PART)
						->joinUsing("rolesusuarios", "codrol", "favorito")
						->where("codusuario=?", $codusuario)
						->order("nombrerol ASC");
		
		$select->setIntegrityCheck(false);
//		Zend_Debug::dump($select->__toString());die;
		return $select->query()->fetchAll();
	}
	
	/**
	 * Devuelve los perfiles asociados a un rol (es decir, los hijos de los roles)
	 * @param int $codrol
	 * @return array
	 */
	public function getPerfiles($codrol) {
		$orderby = array('codrol DESC');
		$select = $this->select( self::SELECT_WITH_FROM_PART )->where("codpadre=?",$codrol)->order($orderby);
		return $select->query()->fetchAll();
	}
	
	public function getRolesPerfil() {
		$orderby = array('codrol ASC');
		$select = $this->select( self::SELECT_WITH_FROM_PART )->where("codpadre IS NOT NULL")->order($orderby);
		return $select->query()->fetchAll();
	}
	
}
